<html>
<head>
<link rel="Stylesheet" type="text/css" href="../DocStyle.css" />
<title>Vczh Library++ Core Library</title>
</head>
<body>
<h1>Vczh Library++ 3.0 Core Library</h1>
<h2>Goal</h2>
<p>Vczh Library++ 3.0 Core Library provides a set of basic constructions for building C++ data processing programs. Some of the library may conflict with the Standard Template Library which we does not use in this project. All projects under Vczh Library++ 3.0 are based on the core library.</p>
<h2>Structure</h2>
<p>Components in the core library are designed to be strongly related to each other. There are several categories of data which are supported by the core library:</p>
<li>Strings</li>
<li>Collections</li>
<li>Streams</li>
<li>XML and Custom Data Structure</li>
<p>We provide a set of abstractions which directly supports these four categories of data. And we provide a set of tools for doing conversions:</p>
<table>
<thead><tr>
<td>Src\Dst</td>
<td>String</td>
<td>Collections</td>
<td>Streams</td>
<td>Custom</td>
</tr></thead>
<tbody><tr>
<td>String</td>
<td>LinQ</td>
<td>Regular Expression</td>
<td>Writer</td>
<td>Combinator</td>
</tr>
<tr>
<td>Collections</td>
<td>Serialization</td>
<td>LinQ</td>
<td>Serialization</td>
<td>Combiantor</td>
</tr>
<tr>
<td>Streams</td>
<td>Reader</td>
<td>Deserialization</td>
<td>Stream</td>
<td>Deserialization</td>
</tr>
<tr>
<td>Custom</td>
<td>Serialization</td>
<td>&nbsp;</td>
<td>Serialization</td>
<td>&nbsp;</td>
</tr></tbody>
</table>
<h2>Class Library Reference</h2>
<p>To provide all the abstractions and tools for the table, we split the core library into the following sub items:</p>
<table>
<thead><tr><td>Group</td><td>Item</td><td>Description</td></tr></thead>
<tbody><tr><td rowspan="11">Foundation</td><td><a href="Basic/Basic.htm#NotCopyable">vl::NotCopyable</a></td><td>To prevent copying sub classes.</td></tr>
<tr><td><a href="Basic/Basic.htm#Error">vl::Error</a></td><td>An exception who stands for a programming mistake.</td></tr>
<tr><td><a href="Basic/Basic.htm#Exception">vl::Exception</a></td><td>Base class of exceptions to control the flow of the code.</td></tr>
<tr><td><a href="Basic/Basic.htm#Object">vl::Object</a></td><td>Base class of almost every class in the core library.</td></tr>
<tr><td><a href="Basic/Basic.htm#KeyType">vl::KeyType</a></td><td>Key type evaluator for collections.</td></tr>
<tr><td><a href="Basic/Basic.htm#POD">vl::POD</a></td><td>Type evaluator for telling whether a instance of a type can be copied by memcpy.</td></tr>
<tr><td><a href="Basic/Basic.htm#Interface">vl::Interface</a></td><td>Base class of all interface classes in the core library.</td></tr>
<tr><td><a href="Basic/Func.htm">vl::Func</a></td><td>Function object to provide abstraction for static functions, member functions and other executable objects.</td></tr>
<tr><td><a href="Basic/Basic.htm#Event">vl::Event</a></td><td>An implementation of Observer Pattern using a collection of Func.</td></tr>
<tr><td><a href="Basic/Basic.htm#Ptr">vl::Ptr</a></td><td>Smart pointer.</td></tr>
<tr><td><a href="Basic/String.htm">vl::WString, vl::AString</a></td><td>String for storing chars or wchar_ts.</td></tr>
<tr><td rowspan="27">Collections</td><td><a href="Collections/Interfaces.htm#IEnumerator">vl::collections::IEnumerator</a></td><td>An interface for an object to go through a collection.</td></tr>
<tr><td><a href="Collections/Interfaces.htm#IEnumerable">vl::collections::IEnumerable</a></td><td>An interface for an object that contains some objects.</td></tr>
<tr><td><a href="Collections/Interfaces.htm#IReadonlyList">vl::collections::IReadonlyList</a></td><td>An interface for a readonly list of objects.</td></tr>
<tr><td><a href="Collections/Interfaces.htm#IArray">vl::collections::IArray</a></td><td>An interface for an array.</td></tr>
<tr><td><a href="Collections/Interfaces.htm#ICollection">vl::collections::ICollection</a></td><td>An interface for a collection of objects.</td></tr>
<tr><td><a href="Collections/Interfaces.htm#IList">vl::collections::IList</a></td><td>An interface for a list of objects.</td></tr>
<tr><td><a href="Collections/Interfaces.htm#IReadonlyDictionary">vl::collections::IReadonlyDictionary</a></td><td>An interface for a readonly dictionary of key-value pairs.</td></tr>
<tr><td><a href="Collections/Interfaces.htm#IDictionary">vl::collections::IDictionary</a></td><td>An interface for a dictionary of key-value pairs.</td></tr>
<tr><td><a href="Collections/Interfaces.htm#IReadonlyGroup">vl::collections::IReadonlyGroup</a></td><td>An interface for a readonly one-to-many dictionary of key-value pairs.</td></tr>
<tr><td><a href="Collections/Interfaces.htm#IGroup">vl::collections::IGroup</a></td><td>An interface for a one-to-many dictionary of key-value pairs.</td></tr>
<tr><td><a href="Collections/Collections.htm#Array">vl::collections::Array</a></td><td>A class for storing a fixed number of objects but the number can be change during runtime.</td></tr>
<tr><td><a href="Collections/Collections.htm#List">vl::collections::List</a></td><td>A class for storing objects.</td></tr>
<tr><td><a href="Collections/Collections.htm#SortedList">vl::collections::SortedList</a></td><td>A class for storing ordered objects.</td></tr>
<tr><td><a href="Collections/Collections.htm#Dictionary">vl::collections::Dictionary</a></td><td>A class for storing key-value pairs.</td></tr>
<tr><td><a href="Collections/Collections.htm#Group">vl::collections::Group</a></td><td>A class for storing key-value pairs while multiple values can be associated to a key.</td></tr>
<tr><td><a href="Collections/Collections.htm#XWrapper">vl::collections::ReadonlyListWrapper</a></td><td>&nbsp;</td></tr>
<tr><td><a href="Collections/Collections.htm#XWrapper">vl::collections::ArrayWrapper</a></td><td>&nbsp;</td></tr>
<tr><td><a href="Collections/Collections.htm#XWrapper">vl::collections::CollectionWrapper</a></td><td>&nbsp;</td></tr>
<tr><td><a href="Collections/Collections.htm#XWrapper">vl::collections::ListWrapper</a></td><td>&nbsp;</td></tr>
<tr><td><a href="Collections/Collections.htm#XWrapper">vl::collections::ReadonlyDictionaryWrapper</a></td><td>&nbsp;</td></tr>
<tr><td><a href="Collections/Collections.htm#XWrapper">vl::collections::DictonaryWrapper</a></td><td>&nbsp;</td></tr>
<tr><td><a href="Collections/Collections.htm#XWrapper">vl::collections::ReadonlyGroupWrapper</a></td><td>&nbsp;</td></tr>
<tr><td><a href="Collections/Collections.htm#XWrapper">vl::collections::GroupWrapper</a></td><td>&nbsp;</td></tr>
<tr><td><a href="Collections/Collections.htm#CopyFrom">vl::collections::CopyFrom function</a></td><td>Copy data between collections, or string and collection.</td></tr>
<tr><td><a href="Collections/Collections.htm#MemoryMode">SetMemoryMode function</a></td><td>Control the memory mode of some containers.</td></tr>
<tr><td><a href="Collections/Collections.htm#OtherCopyFunctions">Other copy functions</a></td><td>Faster but less flexible copy function comparing to CopyFrom.</td></tr>
<tr><td><a href="Collections/Linq.htm">LinQ to Object</a></td><td>High level query for collections.</td></tr>
<tr><td rowspan="6">Regular Expression</td><td><a href="Regex/Regex.htm#RegexString">vl::regex::RegexString</a></td><td>Represent a part of the input string in a match.</td></tr>
<tr><td><a href="Regex/Regex.htm#RegexMatch">vl::regex::RegexMatch</a></td><td>Represent a regular expression match.</td></tr>
<tr><td><a href="Regex/Regex.htm#Regex">vl::regex::Regex</a></td><td>Regular expression engine.</td></tr>
<tr><td><a href="Regex/Regex.htm#RegexToken">vl::regex::RegexToken</a></td><td>Token</td></tr>
<tr><td><a href="Regex/Regex.htm#RegexTokens">vl::regex::RegexTokens</a></td><td>Token List</td></tr>
<tr><td><a href="Regex/Regex.htm#RegexLexer">vl::regex::RegexLexer</a></td><td>Lexical Analyzer</td></tr>
<tr><td rowspan="27">Stream System</td><td>vl::stream::IStream</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::IEncoder</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::IDecoder</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::FileStream</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::MemoryStream</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::MemoryWrapperStream</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::CacheStream</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::BroadcastStream</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::RecorderStream</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::TextReader</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::TextWriter</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::StringReader</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::StringWriter</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::EncoderStream</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::DecoderStream</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::CharEncoder</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::CharDecoder</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::MbcsEncoder</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::MbcsDecoder</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::Utf16Encoder</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::Utf16Decoder</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::Utf16BEEncoder</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::Utf16BEDecoder</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::Utf8Encoder</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::Utf8Decoder</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::BomEncoder</td><td>&nbsp;</td></tr>
<tr><td>vl::stream::BomDecoder</td><td>&nbsp;</td></tr>
<tr><td rowspan="18">ObjectModel</td><td>vl::objectmodel::ObjectType</td><td>&nbsp;</td></tr>
<tr><td>vl::objectmodel::ObjectValue</td><td>&nbsp;</td></tr>
<tr><td>vl::objectmodel::ObjectMember</td><td>&nbsp;</td></tr>
<tr><td>vl::objectmodel::ObjectTypeInformation</td><td>&nbsp;</td></tr>
<tr><td>vl::objectmodel::ObjectTypeRegister</td><td>&nbsp;</td></tr>
<tr><td>vl::objectmodel::TypeOf&lt;T&gt; function</td><td>&nbsp;</td></tr>
<tr><td>vl::objectmodel::New&lt;T&gt; function</td><td>&nbsp;</td></tr>
<tr><td>vl::objectmodel::NewReference&lt;T&gt; function</td><td>&nbsp;</td></tr>
<tr><td>vl::objectmodel::NewValue&lt;T&gt; function</td><td>&nbsp;</td></tr>
<tr><td>Numeric Type</td><td>&nbsp;</td></tr>
<tr><td>Pointer Type</td><td>&nbsp;</td></tr>
<tr><td>Reference Type</td><td>&nbsp;</td></tr>
<tr><td>Array Type</td><td>&nbsp;</td></tr>
<tr><td>Decorator Type</td><td>&nbsp;</td></tr>
<tr><td>Function Type</td><td>&nbsp;</td></tr>
<tr><td>Enumeration Type</td><td>&nbsp;</td></tr>
<tr><td>Class Type</td><td>&nbsp;</td></tr>
<tr><td>Class Type Template</td><td>&nbsp;</td></tr></tbody>
</table>
</body>
</html>